#include <iostream>
#include <string>
#include <cstring>
#include <string.h>
#include <map>
#include <unistd.h>
#include <unordered_map>

using namespace std;

class Solution 
{
public:
    int romanToInt(string s) 
    {
        map<char, int> romanToInt = {{'I', 1}, {'V', 5}, {'X', 10},
        {'L', 50}, {'C', 100}, {'D', 500}, {'M', 1000}};

        int s_length = s.length();
        int result = 0;

        /* 遍历罗马字符串 */
        //!这里使用i++和++i有区别吗？感觉是没有的 
        for(int i = 0; i < s_length; i++)
        {
            /* 当前数值的值 */
            int value = romanToInt[s[i]];
            /* 当前数值不是最后一位数，并且比后一个数值小*/
            if(i + 1 < s_length && value < romanToInt[s[i + 1]])
            {
                /* 减去当前值 */
                result -= value;
            }
            else
            {
                /* 加上当前值 */
                result += value;
            }
        }
        return result;
    }
};

int main()
{
    string roman;
    cin >> roman;
    Solution s;
    int result = s.romanToInt(roman);
    cout << result << endl;

    return 0;
}